﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace System.Web.Mvc
{
    /// <summary>
    /// 表示用户定义的通用 JavaScript 对象表示法(JSON 数据格式) 数据响应格式。
    /// </summary>
    public struct JsonStatus
    {
        /// <summary>
        /// 以指定的初始化参数构建一个 <see cref="System.Web.Mvc.JsonStatus"/> 结构。
        /// </summary>
        /// <param name="statusResult">表示 HTTP 请求的处理状态(是否处理成功)。</param>
        /// <param name="statusCode">表示 HTTP 状态码(仅作为 JSON 结果输出，与 HttpResponse.StatusCode 无关)。</param>
        /// <param name="statusDescription">表示 HTTP 状态表示(仅作为 JSON 结果输出，与 HttpResponse.StatusDescription 无关)。</param>
        /// <param name="message">表示 HTTP 请求处理结果的附加消息。</param>
        /// <param name="url">表示 HTTP 请求处理结果的附加 URL 地址。</param>
        /// <param name="contentEncoding">表示 HTTP 响应内容编码。</param>
        /// <param name="maxJsonLength">表示 HTTP 响应数据的最大长度。</param>
        public JsonStatus(bool? statusResult, int? statusCode, string statusDescription, string message, string url, Encoding contentEncoding, int? maxJsonLength)
        {
            this.StatusResult = statusResult;
            this.StatusCode = statusCode;
            this.StatusDescription = statusDescription;
            this.Message = message;
            this.Url = url;
            this.ContentEncoding = contentEncoding;
            this.MaxJsonLength = maxJsonLength;
        }

        /// <summary>
        /// 表示 HTTP 请求的处理状态(是否处理成功)。
        /// </summary>
        public bool? StatusResult;

        /// <summary>
        /// 表示 HTTP 状态码(仅作为 JSON 结果输出，与 HttpResponse.StatusCode 无关)。
        /// </summary>
        public int? StatusCode;

        /// <summary>
        /// 表示 HTTP 状态表示(仅作为 JSON 结果输出，与 HttpResponse.StatusDescription 无关)。
        /// </summary>
        public string StatusDescription;

        /// <summary>
        /// 表示 HTTP 请求处理结果的附加消息。
        /// </summary>
        public string Message;

        /// <summary>
        /// 表示 HTTP 请求处理结果的附加 URL 地址。
        /// </summary>
        public string Url;

        /// <summary>
        /// 表示 HTTP 响应内容编码。
        /// </summary>
        public Encoding ContentEncoding;

        /// <summary>
        /// 表示 HTTP 响应数据的最大长度。
        /// </summary>
        public int? MaxJsonLength;
    }
}
